fadece
@@ -59,6 +59,11 @@
    */
   Class<? extends UDF> udfClass;
 
+  /**
+   * The underlying UDF class Name.
+   */
+  String udfClassName;
+
   /**
    * Greate a new GenericUDFBridge object.
    * 
@@ -72,6 +77,7 @@
public GenericUDFBridge(String udfName, boolean isOperator,
     this.udfName = udfName;
     this.isOperator = isOperator;
     this.udfClass = udfClass;
+    this.udfClassName = udfClass != null ? udfClass.getName() : null;
   }
 
   // For Java serialization only
@@ -86,6 +92,14 @@
public String getUdfName() {
     return udfName;
   }
 
+  public String getUdfClassName() {
+    return udfClassName;
+  }
+
+  public void setUdfClassName(String udfClassName) {
+    this.udfClassName = udfClassName;
+  }
+
   public boolean isOperator() {
     return isOperator;
   }
@@ -123,6 +137,11 @@
public void setUdfClass(Class<? extends UDF> udfClass) {
   @Override
   public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException {
 
+    if (udfClass == null) {
+      throw new UDFArgumentException(
+          "The UDF implementation class '" + udfClassName
+              + "' is not present in the class path");
+    }
     udf = (UDF) ReflectionUtils.newInstance(udfClass, null);
 
     // Resolve for the method based on argument types
